/*
 *
 */
package org.jiscinvolve.astrodabis.barberry.common.data;

import org.jiscinvolve.astrodabis.barberry.common.core.Owned;
import org.jiscinvolve.astrodabis.barberry.common.core.Tracked;
import org.jiscinvolve.astrodabis.barberry.common.core.Identified;
import org.jiscinvolve.astrodabis.barberry.common.core.Identifier;

import java.net.URI;
import java.net.URL;

/**
 *
 */
public interface TapService
extends Identified, Tracked
    {

    public interface Factory
        {

        public Identifier ident(String ident);

        public TapService create(URI ivorn, String name);
        public TapService createQuick(URI ivorn, String name);

        public Iterable<TapService> select();

        public TapService select(Identifier ident);

        public TapService select(URI ivorn);

        public void update(TapService service);

        }

    public URI ivorn();

    public String name();

    public void name(String value);

    public String text();

    public void text(String value);

    public URL endpoint();

    public void endpoint(URL endpoint);

    public interface TapTables
        {

        public Identifier ident(String ident);

        public TapTable create(String name);
        public TapTable createQuick(String name);

        public TapTable select(Identifier ident);

        public TapTable select(String name);

        public Iterable<TapTable> select();

        }

    public TapTables tables();

    }

